跳到主要内容

[toc]

python基础二十六 网络编程-网络基础知识

1.网络基础中涉及到的几种概念

1.1 IP地址

1.1.1 概念

IP地址是用来在网络中标记一台电脑的一串数字,在网络上是唯一的

IP地址分类私网IP地址和公网IP地址

1.1.2 格式说明

每一个IP地址包括两部分:网络地址和主机地址

iShot_2024-08-29_15.21.21

  • A类IP地址由1字节的⽹络地址和3字节主机地址组成, ⽹络地址的最⾼位必须是“0”,地址范围1.0.0.1-126.255.255.254可⽤的A类⽹络有126个, 每个⽹络能容纳1677214个主机

  • B类IP地址由2个字节的⽹络地址和2个字节的主机地址组成, ⽹络地址的最⾼位必须是“10”,地址范围128.1.0.1-191.255.255.254 可⽤的B类⽹络有16384个, 每个⽹络能容纳65534主机

  • C类IP地址由3字节的⽹络地址和1字节的主机地址组成, ⽹络地址的最⾼位必须是“110”范围192.0.1.1-223.255.255.254 C类⽹络可达2097152个, 每个⽹络能容纳254个主机

  • D类IP地址第⼀个字节以“1110”开始, 它是⼀个专⻔保留的地址。它并不指向特定的⽹络, ⽬前这⼀类地址被⽤在多点⼴播(一对多) 中多点⼴播地址⽤来⼀次寻址⼀组计算机 地址范围224.0.0.1-239.255.255.254

  • E类IP地址以“1111”开始,为将来保留使用,仅做实验和开发用

1.1.3 私有IP地址

1.1.3.1 含义

私有IP:本地局域网的IP,专门为组织机构内部使用

在这么多网络IP中,国际规定有一部分的Ip地址是用于我们的局域网使用,属于私网IP

1.1.3.2 范围
  • A类

    10.0.0.0 ~ 10.255.255.255

  • B类

    172.16.0.0 ~ 172.31.0.0

  • C类

    192.168.0.0 ~ 192.168.255.255

1.1.4 回环地址 127.0.0.1

作用

  • 测试当前计算机的网络通信协议,127.0.0.1可以代表本机

  • 用来检测本机网络问题,ping 127.0.0.1即可检测

1.1.5 子网掩码

1.1.5.1 概念

子网掩码是在IPv4地址资源紧缺的背景下为了解决lP地址分配而产生的虚拟lP技术,通过子网掩码将A、B、C三类地址划分为若干子网,从而显著提高了IP地址的分配效率,有效解决了IP地址资源紧张的局面。另一方面,在企业内网中为了更好地管理网络,网管人员也利用子网掩码的作用,人为地将一个较大的企业内部网络划分为更多个小规模的子网,再利用三层交换机的路由功能实现子网互联,从而有效解决了网络广播风暴和网络病毒等诸多网络管理方面的问题。

1.1.5.2 默认子网掩码
类别子网掩码的二进制数值子网掩码的十进制数值
A11111111 00000000 00000000 00000000255.0.0.0
B11111111 11111111 00000000 00000000255.255.0.0
C11111111 11111111 11111111 000000000255.255.255.0
1.1.5.3 子网掩码功能

子网掩码是一个32位地址,是与IP地址结合使用的一种技术。它的主要作用有两个

  • 一是用于屏蔽IP地址的一部分以区别网络标识和主机标识,并说明该IP地址是在局域网上,还是在远程网上
  • 二是用于将一个大的IP网络划分为若干小的子网络。

1.2 网络端口号

1.2.1 概念及作用

端口号是网络中通过IP地址+端口号区分不同的服务

1.2.2 范围及分类

  • 端口号是一个数字,只有整数,范围是从0到65535(分为知名和动态两种)

  • 知名端口是众所周知的端口号,用来做固定的事情,范围是从0到1023

    • 80端口分配给http服务
    • 21端口分配给ftp服务
  • 动态端口是一般不固定分配某种服务,而是动态分配,动态分配是指当一个系统进程或应用程序进程需要网络通信是,它向主机申请一个端口,主机从可用的端口号中分配一个供它使用

1.3 网络协议

1.3.1 概念

  • 协议:约定好的规范
  • 早期的计算机⽹络, 都是由各⼚商⾃⼰规定⼀套协议, IBM、Apple和 Microsoft都有各⾃的⽹络协议, 互不兼容(语言、方言、阿帕网) 为了把全世界的所有不同类型的计算机都连接起来, 就必须规定⼀套全球通⽤的协议, 为了实现互联⽹这个⽬标,互联⽹协议簇(Internet Protocol Suite)就是通⽤协议标准。 因为互联⽹协议包含了上百种协议标准,但是最重要的两个协议是TCP和IP协议,所以,⼤家把互联⽹的协议总称TCP/IP协议

1.3.2 TCP/IP模型

  • TCP/IP定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准

  • 4层的层级结构中,每一层都呼叫它的下一层所提供的网络来完成自己的需求

  • 其中的应用层关注的是应用程序的细节,而不是数据在网络中的传输活动 其他三层主要处理所有的通信细节,对应用程序一无所知;

    • 应用层:应用程序间沟通的层,不同的文件系统有不同的文件命名原则和不同的文本行表示方法等,不同的系统之间传输文件还有各种不兼容问题,这些都将由应用层来处理

    • 传输层:在此层中,它提供了节点间的数据传送服务,如传输控制协议(TCP)、用户数据报协议(UDP)等,这一层负责传送数据,并且确定数据已被送达并接收

    • 网络层:负责提供基本的数据包传送功能,让每一块数据包都能够到达目的主机。网络层接收由更低层发来的数据包,并把该数据包发送到更高层,相反,IP层也把从TCP或UDP层接收来的数据包传送到更低层

    • 网络接口层:对实际的网络媒体的管理,定义如何使用实际网络来传送数据(处理机械的、电气的和过程的接口)

示意图

iShot_2024-08-29_15.25.09

TCP/IP协议簇中各协议之间的关系

iShot_2024-08-29_15.30.09

1.3.3 OSI七层模型

OSI七层模型示意图

iShot_2024-08-29_15.32.11

物理层:

网线连接在客户端计算机上,其实是连接在了计算机的一个叫做网卡的设备上,网卡是专门负责与外界通信的。网线一般是双绞线或者光缆,也可以使用无线电波,中间经过交换机,路由器,防火墙等等一堆设备统称为物理连接介质,可以理解为经过互联网,再连接到服务端设备。首先工作的是物理层,发送电信号


数据链路层:

电信号分为两种,高电平和低电平,高电平可以被人定义成数字 1,低电平可以被人定义成数字 0。假如我客户端发送一个 0010101100,服务端相应的就会收到这些数字。但是单纯的一段二进制数字这是没有意义的,一定要明确,从哪里开始到哪里结束这表示一段内容,从哪里开始到哪里结束这又表示另外一段内容。这也就是说,我们要给这些二进制数字进行分组

以太网协议规定:

  • 一组电信号构成一个数据报,叫做‘帧’
  • 每一数据帧分成:报头head和数据data两部分

这一点和我们写信类似,有信封,有信的内容,信封上面会写明这封信的发送者接受者分别是谁, 信里面的信纸上写的就是信的内容。

head包含:(固定18个字节)

  • 发送者/源地址,6个字节
  • 接收者/目标地址,6个字节
  • 数据类型,6个字节

data包含:(最短46字节,最长1500字节)

注意:头固定长度18个字节,也只有固定长度,接收者才知道按照什么标准来读取

  • 数据报的具体内容

head长度+data长度=最短64字节,最长1518字节,超过最大限制就分片发送

以太网规定head里面要有发送者的源地址和接受者的目标地址,源地址可以理解为是发送者的家,目标地址就是接收者的家。那么,在计算机中如何标识家在哪里?

使用mac地址,注意这个mac地址不是你用的苹果电脑那个mac,只是巧合同名了。MAC地址(Media Access Control Address),直译为媒体访问控制地址,也称为局域网地址(LAN Address),以太网地址(Ethernet Address)或物理地址(Physical Address),它是一个用来确认网上设备位置的地址。

mac地址是计算机上一个唯一的地址,是在计算机的网卡上的,每块网卡出厂时都被烧制上一个 世界唯一的mac地址,长度为48位2进制,通常由12位16进制数表示(前六位是厂商编号,后六位是流水线号) 这样做的目的就是要保证每一个mac地址是全世界独一无二的


网络层:

网络层有一个IP协议,我们常说的IPV4就是IP协议的第四个版本,IPV6就是IP协议的第六个版本


传输层:

传输层有一个TCP协议和UDP协议,这两个协议都是基于端口工作的协议


会话层:负责文件发送/接收


表示层:负责数据压缩、编码


应用层:

应用层就是应用软件,应用软件是你写的,这个标准可以由你来定,当然了你也可以遵循一些大家已经定制好了的应用层协议的标准,常见的有 http,mail,ftp


发送过程:

应用层软件(有协议或无协议)===>传输层(TCP/UDP协议)===>网络层(ip协议)===>数据链路层(以太网协议)===>物理层===>电信号发送(100011001010110)

接收过程则相反


TCP/IP与OSI七层模型对比

iShot_2024-08-29_15.33.49